///////////////////////////////////////////////////////////
//  GovSteamEU.h
//  Implementation of the Class GovSteamEU
//  Original author: tsaxton
///////////////////////////////////////////////////////////

#ifndef GOVSTEAMEU_H
#define GOVSTEAMEU_H

#include "IEC61970/Base/Domain/Float.h"
#include "IEC61970/Base/Domain/PU.h"
#include "IEC61970/Base/Domain/ActivePower.h"
#include "IEC61970/Base/Domain/Seconds.h"
#include "IEC61970/Dynamics/StandardModels/TurbineGovernorDynamics/TurbineGovernorDynamics.h"

namespace IEC61970
{
	namespace Dynamics
	{
		namespace StandardModels
		{
			namespace TurbineGovernorDynamics
			{
				/**
				 * Simplified model  of boiler and steam turbine with PID governor.
				 */
				class GovSteamEU : public IEC61970::Dynamics::StandardModels::TurbineGovernorDynamics::TurbineGovernorDynamics
				{

				public:
					GovSteamEU();
					virtual ~GovSteamEU();
					/**
					 * Control valves rate closing limit (Chc).  Unit = PU/sec.  Typical Value = -3.3.
					 */
					IEC61970::Base::Domain::Float chc;
					/**
					 * Control valves rate opening limit (Cho).  Unit = PU/sec.  Typical Value = 0.17.
					 */
					IEC61970::Base::Domain::Float cho;
					/**
					 * Intercept valves rate closing limit (Cic).  Typical Value = -2.2.
					 */
					IEC61970::Base::Domain::PU cic;
					/**
					 * Intercept valves rate opening limit (Cio).  Typical Value = 0.123.
					 */
					IEC61970::Base::Domain::PU cio;
					/**
					 * Dead band of the frequency corrector (db1).  Typical Value = 0.
					 */
					IEC61970::Base::Domain::PU db1;
					/**
					 * Dead band of the speed governor (db2).  Typical Value = 0.0004.
					 */
					IEC61970::Base::Domain::PU db2;
					/**
					 * Maximum control valve position (Hhpmax).  Typical Value = 1.
					 */
					IEC61970::Base::Domain::PU hhpmax;
					/**
					 * Gain of the power controller (Ke).  Typical Value = 0.65.
					 */
					IEC61970::Base::Domain::PU ke;
					/**
					 * Gain of the frequency corrector (Kfcor).  Typical Value = 20.
					 */
					IEC61970::Base::Domain::PU kfcor;
					/**
					 * Fraction of total turbine output generated by HP part (Khp).  Typical Value = 0.
					 * 277.
					 */
					IEC61970::Base::Domain::PU khp;
					/**
					 * Fraction of total turbine output generated by HP part (Klp).  Typical Value = 0.
					 * 723.
					 */
					IEC61970::Base::Domain::PU klp;
					/**
					 * Gain of the speed governor (Kwcor).  Typical Value = 20.
					 */
					IEC61970::Base::Domain::PU kwcor;
					/**
					 * Base for power values (MWbase) (>0).  Unit = MW.
					 */
					IEC61970::Base::Domain::ActivePower mwbase;
					/**
					 * Maximal active power of the turbine (Pmax).  Typical Value = 1.
					 */
					IEC61970::Base::Domain::PU pmax;
					/**
					 * Maximum low pressure limit (Prhmax).  Typical Value = 1.4.
					 */
					IEC61970::Base::Domain::PU prhmax;
					/**
					 * Intercept valves transfer limit (Simx).  Typical Value = 0.425.
					 */
					IEC61970::Base::Domain::PU simx;
					/**
					 * Boiler time constant (Tb).  Typical Value = 100.
					 */
					IEC61970::Base::Domain::Seconds tb;
					/**
					 * Derivative time constant of the power controller (Tdp).  Typical Value = 0.
					 */
					IEC61970::Base::Domain::Seconds tdp;
					/**
					 * Electro hydraulic transducer (Ten).  Typical Value = 0.1.
					 */
					IEC61970::Base::Domain::Seconds ten;
					/**
					 * Frequency transducer time constant (Tf).  Typical Value = 0.
					 */
					IEC61970::Base::Domain::Seconds tf;
					/**
					 * Time constant of the power controller (Tfp).  Typical Value = 0.
					 */
					IEC61970::Base::Domain::Seconds tfp;
					/**
					 * High pressure (HP) time constant of the turbine (Thp).  Typical Value = 0.31.
					 */
					IEC61970::Base::Domain::Seconds thp;
					/**
					 * Integral time constant of the power controller (Tip).  Typical Value = 2.
					 */
					IEC61970::Base::Domain::Seconds tip;
					/**
					 * Low pressure(LP) time constant of the turbine (Tlp).  Typical Value = 0.45.
					 */
					IEC61970::Base::Domain::Seconds tlp;
					/**
					 * Power transducer time constant (Tp).  Typical Value = 0.07.
					 */
					IEC61970::Base::Domain::Seconds tp;
					/**
					 * Reheater  time constant of the turbine (Trh).  Typical Value = 8.
					 */
					IEC61970::Base::Domain::Seconds trh;
					/**
					 * Control valves servo time constant (Tvhp).  Typical Value = 0.1.
					 */
					IEC61970::Base::Domain::Seconds tvhp;
					/**
					 * Intercept valves servo time constant (Tvip).  Typical Value = 0.15.
					 */
					IEC61970::Base::Domain::Seconds tvip;
					/**
					 * Speed transducer time constant (Tw).  Typical Value = 0.02.
					 */
					IEC61970::Base::Domain::Seconds tw;
					/**
					 * Upper limit for frequency correction (Wfmax).  Typical Value = 0.05.
					 */
					IEC61970::Base::Domain::PU wfmax;
					/**
					 * Lower limit for frequency correction (Wfmin).  Typical Value = -0.05.
					 */
					IEC61970::Base::Domain::PU wfmin;
					/**
					 * Emergency speed control lower limit (wmax1).  Typical Value = 1.025.
					 */
					IEC61970::Base::Domain::PU wmax1;
					/**
					 * Emergency speed control upper limit (wmax2).  Typical Value = 1.05.
					 */
					IEC61970::Base::Domain::PU wmax2;
					/**
					 * Upper limit for the speed governor (Wwmax).  Typical Value = 0.1.
					 */
					IEC61970::Base::Domain::PU wwmax;
					/**
					 * Lower limit for the speed governor frequency correction (Wwmin).  Typical Value
					 * = -1.
					 */
					IEC61970::Base::Domain::PU wwmin;

				};

			}

		}

	}

}
#endif // GOVSTEAMEU_H
